import { ITransOption } from "../common/Types";
// import * as OpenCC from "opencc-js" //not find opencc-js
import * as OpenCC from "./../../node_modules/opencc-js"; //import with relative path

/**
 * 语言工具类
 */
export default class LanguageUtils {
    public static transZH(data: ITransOption): string {
        const opt = {
            from: <OpenCC.Locale>data.from,
            to: <OpenCC.Locale>data.to,
        };

        const converter = OpenCC.Converter(opt);
        if (data.unXml) {
            return converter(data.text);
        }

        // FairyGUI的多语言xml
        const xmlContent = data.text;
        // 1. 使用 FGUI 的 XML 类解析字符串
        const xmlDoc = new CS.FairyGUI.Utils.XML(xmlContent);

        // 2. 获取所有 <string> 节点（返回 XMLList）
        const stringNodes = xmlDoc.Elements("string");

        // 3. 遍历 XMLList（注意：不能直接用 forEach 或 map）
        for (let i = 0; i < stringNodes.Count; i++) {
            const node = stringNodes.get_Item(i); // 通过索引访问
            if (node) {
                const text = node.text;

                // 4. 转换文本（简体 <-> 繁体）
                if (text) {
                    node.text = converter(text); // 调用 OpenCC
                }
            }
        }

        // 5. 序列化为 XML 字符串
        return xmlDoc.ToXMLString(true);
    }
}
